<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Application Timer</title>
<link href="tabs.css" rel="stylesheet" type="text/css" />
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="alias.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="alias.js"></script>

<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>


<script type="text/javascript">
  jQuery(document).ready(function () {
    if(gref){ // Number all _img and _table classes
      gref();
    }
  });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->

<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">nRF51822 BLE SDK
   
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('group__app__timer.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#define-members">Defines</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">Application Timer</div>  </div>
<div class="ingroups"><a class="el" href="group__ble__sdk__lib.html">Bluetooth Libraries</a></div></div>
<div class="contents">

<p>Application timer functionality.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app__timer.html#gad5d0923562b40beede3620c621c39aec">APP_TIMER_HIGHEST_PRI</a>&#160;&#160;&#160;0x00</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app__timer.html#ga02ba0b12340bf53b472283b752257f06">APP_TIMER_LOWEST_PRI</a>&#160;&#160;&#160;0xff</td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0586b27407494731cad5b72b12aa5bfe"></a><!-- doxytag: member="app_timer::app_timer_timeout_handler_t" ref="ga0586b27407494731cad5b72b12aa5bfe" args=")(app_timer_id_t timer_id)" -->
typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app__timer.html#ga0586b27407494731cad5b72b12aa5bfe">app_timer_timeout_handler_t</a> )(app_timer_id_t timer_id)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Application timeout handler type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaad3eca6b3b4a47f9a4211ced6e4a7d4b"></a><!-- doxytag: member="app_timer::app_timer_issue_evt_func_t" ref="gaad3eca6b3b4a47f9a4211ced6e4a7d4b" args=")(app_timer_id_t timer_id, app_timer_timeout_handler_t timeout_handler, uint8_t priority)" -->
typedef uint32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app__timer.html#gaad3eca6b3b4a47f9a4211ced6e4a7d4b">app_timer_issue_evt_func_t</a> )(app_timer_id_t timer_id, <a class="el" href="group__app__timer.html#ga0586b27407494731cad5b72b12aa5bfe">app_timer_timeout_handler_t</a> timeout_handler, uint8_t priority)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer type for letting the application control how or when timeout handlers are executed. This will be used for connecting the timer module to the scheduler. <br/></td></tr>
<tr><td colspan="2"><h2><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app__timer.html#gaae9566b4f8c39bd6e7b364940ca1b73b">app_timer_mode_t</a> { <b>APP_TIMER_MODE_SINGLE_SHOT</b>, 
<b>APP_TIMER_MODE_REPEATED</b>
 }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Available timer modes. <br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app__timer.html#ga4e1da5a2f64ee78ee97f7422ea97e439">app_timer_init</a> (<a class="el" href="group__app__timer.html#gaad3eca6b3b4a47f9a4211ced6e4a7d4b">app_timer_issue_evt_func_t</a> issue_evt_func)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the timer module.  <a href="#ga4e1da5a2f64ee78ee97f7422ea97e439"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app__timer.html#gad1b89d22873086f82a79a8525f18b9fc">app_timer_is_running</a> (app_timer_id_t timer_id)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks if the specified timer is running.  <a href="#gad1b89d22873086f82a79a8525f18b9fc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app__timer.html#ga54651d3dc5266bd7541b80918527b060">app_timer_start</a> (app_timer_id_t timer_id, <a class="el" href="group__app__timer.html#ga0586b27407494731cad5b72b12aa5bfe">app_timer_timeout_handler_t</a> timeout_handler, uint32_t timeout_ms, <a class="el" href="group__app__timer.html#gaae9566b4f8c39bd6e7b364940ca1b73b">app_timer_mode_t</a> mode, uint8_t priority)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts a timer.  <a href="#ga54651d3dc5266bd7541b80918527b060"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__app__timer.html#ga4112ddbc75deb5c4d5db7c8afb1f5d8a">app_timer_stop</a> (app_timer_id_t timer_id)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Stops the specified timer.  <a href="#ga4112ddbc75deb5c4d5db7c8afb1f5d8a"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<p>Application timer functionality. </p>
<p>It enables the application to create multiple timer instances based on the RTC1 timer peripheral. Applications using app_timer must have a configuration file named app_timer_cfg.h (see <a class="el" href="group__ble__sdk__apps__config__files.html">'Config Files'</a> for details).</p>
<dl class="warning"><dt><b>Warning:</b></dt><dd>Due to a problem in the way the Application Timer uses the RTC peripheral, timer interrupts may be lost. Therefore, the current implementation is not reliable, and should not be used in production code. </dd></dl>
<hr/><h2>Define Documentation</h2>
<a class="anchor" id="gad5d0923562b40beede3620c621c39aec"></a><!-- doxytag: member="app_timer.h::APP_TIMER_HIGHEST_PRI" ref="gad5d0923562b40beede3620c621c39aec" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define APP_TIMER_HIGHEST_PRI&#160;&#160;&#160;0x00</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Highest timer priority. </p>

<p>Definition at line <a class="el" href="app__timer_8h_source.html#l00037">37</a> of file <a class="el" href="app__timer_8h_source.html">app_timer.h</a>.</p>

</div>
</div>
<a class="anchor" id="ga02ba0b12340bf53b472283b752257f06"></a><!-- doxytag: member="app_timer.h::APP_TIMER_LOWEST_PRI" ref="ga02ba0b12340bf53b472283b752257f06" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define APP_TIMER_LOWEST_PRI&#160;&#160;&#160;0xff</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Lowest timer priority. </p>

<p>Definition at line <a class="el" href="app__timer_8h_source.html#l00038">38</a> of file <a class="el" href="app__timer_8h_source.html">app_timer.h</a>.</p>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga4e1da5a2f64ee78ee97f7422ea97e439"></a><!-- doxytag: member="app_timer.h::app_timer_init" ref="ga4e1da5a2f64ee78ee97f7422ea97e439" args="(app_timer_issue_evt_func_t issue_evt_func)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t app_timer_init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__app__timer.html#gaad3eca6b3b4a47f9a4211ced6e4a7d4b">app_timer_issue_evt_func_t</a>&#160;</td>
          <td class="paramname"><em>issue_evt_func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initializes the timer module. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">issue_timeout_evt_func</td><td>Function for letting the application control how or when timeout handlers are executed. Normally this will be used for making the timer module pass timeout events to the scheduler (by supplying a pointer to <a class="el" href="group__app__scheduler.html#gad09181e10ae224ca354b5e650b5e3a0a" title="Schedules a timer event.">app_sched_timer_event_schedule()</a>). Set to NULL to make the timer module call the timeout handler directly from the timer interrupt handler. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>NRF_SUCCESS on successful initialization, otherwise an error code. </dd></dl>

<p>Definition at line <a class="el" href="app__timer_8c_source.html#l00184">184</a> of file <a class="el" href="app__timer_8c_source.html">app_timer.c</a>.</p>

</div>
</div>
<a class="anchor" id="gad1b89d22873086f82a79a8525f18b9fc"></a><!-- doxytag: member="app_timer.h::app_timer_is_running" ref="gad1b89d22873086f82a79a8525f18b9fc" args="(app_timer_id_t timer_id)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool app_timer_is_running </td>
          <td>(</td>
          <td class="paramtype">app_timer_id_t&#160;</td>
          <td class="paramname"><em>timer_id</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Checks if the specified timer is running. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">timer_id</td><td>Timer ID of the timer to check. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if timer is running, false otherwise. </dd></dl>

<p>Definition at line <a class="el" href="app__timer_8c_source.html#l00191">191</a> of file <a class="el" href="app__timer_8c_source.html">app_timer.c</a>.</p>

</div>
</div>
<a class="anchor" id="ga54651d3dc5266bd7541b80918527b060"></a><!-- doxytag: member="app_timer.h::app_timer_start" ref="ga54651d3dc5266bd7541b80918527b060" args="(app_timer_id_t timer_id, app_timer_timeout_handler_t timeout_handler, uint32_t timeout_ms, app_timer_mode_t mode, uint8_t priority)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">uint32_t app_timer_start </td>
          <td>(</td>
          <td class="paramtype">app_timer_id_t&#160;</td>
          <td class="paramname"><em>timer_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__app__timer.html#ga0586b27407494731cad5b72b12aa5bfe">app_timer_timeout_handler_t</a>&#160;</td>
          <td class="paramname"><em>timeout_handler</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>timeout_ms</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__app__timer.html#gaae9566b4f8c39bd6e7b364940ca1b73b">app_timer_mode_t</a>&#160;</td>
          <td class="paramname"><em>mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>priority</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Starts a timer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">timer_id</td><td>Id of timer to start. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">timeout_handler</td><td>Handler to be called when timer expires. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">timeout_ms</td><td>Number of milliseconds to timeout event. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>Timer mode. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">priority</td><td>Priority level at which the timeout handler will be run. When using the scheduler, this will be the scheduler queue id. When not using the scheduler, this value will be ignored. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>NRF_SUCCESS on success, otherwise an error code. </dd></dl>

<p>Definition at line <a class="el" href="app__timer_8c_source.html#l00215">215</a> of file <a class="el" href="app__timer_8c_source.html">app_timer.c</a>.</p>

</div>
</div>
<a class="anchor" id="ga4112ddbc75deb5c4d5db7c8afb1f5d8a"></a><!-- doxytag: member="app_timer.h::app_timer_stop" ref="ga4112ddbc75deb5c4d5db7c8afb1f5d8a" args="(app_timer_id_t timer_id)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void app_timer_stop </td>
          <td>(</td>
          <td class="paramtype">app_timer_id_t&#160;</td>
          <td class="paramname"><em>timer_id</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Stops the specified timer. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">timer_id</td><td>Id of timer to stop. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="app__timer_8c_source.html#l00272">272</a> of file <a class="el" href="app__timer_8c_source.html">app_timer.c</a>.</p>

</div>
</div>
</div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>


    <li class="footer">
      Copyright &copy 2006-2011 <a href="http://www.nordicsemi.no" style="text-decoration:none">Nordic Semiconductor</a>.
      All Rights Reserved.
      <a href="disclaimer.html">Disclaimer</a>
    </li>
   </ul>
 </div>


</body>
</html>
